package com.estun.backroundManagementService.modules.workOrder.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.estun.backroundManagementService.domain.BaseEntity;
import com.estun.backroundManagementService.enums.PriorityEnum;
import com.estun.backroundManagementService.enums.WorkOrderStatusEnum;
import com.estun.backroundManagementService.enums.WorkOrderTypeEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * @author yusiocng
 * @date 2023/12/1
 * @description 工单实体类
 */
@TableName("t_work_order")
@Data
public class WorkOrderEntity extends BaseEntity {

    /**
     * 工厂编码
     */
    private String factoryCode;

    /**
     * 工艺路线编码
     */
    private String routeCode;

    /**
     * 工单类型
     */
    private String orderType;

    /**
     * 排程数量
     */

    private Integer scheduleQty;

    /**
     * 已完成排程数量
     */

    private Integer scheduleQtyFinished;

    /**
     * 产线名称
     */
    private String lineName;

    /**
     * 工单状态
     */
    private String orderStatus;

    /**
     * 物料编码
     */
    private String materialCode;

    /**
     * 优先级:50一般；40加急；30紧急
     */
    private String priority;

    @TableField(exist = false)
    private String priorityDesc;

    public void setPriority(String priority) {
        this.priority = priority;
        this.priorityDesc = PriorityEnum.getByCode(priority).getDescription();
    }

    /**
     * 物料版本
     */
    private String materialVersion;

    /**
     * 工艺路线名称
     */
    private String routeName;

    /**
     * 排程开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime scheduleStartTime;

    /**
     * 产线编码
     */
    private String lineCode;

    /**
     * 物料名称
     */
    private String materialName;

    /**
     * 工艺路线版本
     */
    private String routeVersion;

    /**
     * 工单数量
     */
    private String orderQty;

    /**
     * 排程编码
     */
    private String scheduleCode;

    /**
     * 排程状态（0：新建，1、下达，2、开线，3、生产、4、暂停、5、取消、6、完成）
     */
    private String scheduleStatus;


    /**
     * 排程类型
     * 1 主排程 2 虚拟排程（用于下游路板数据发送）
     */
    private Integer scheduleType;

    @TableField(exist = false)
    private String scheduleStatusDesc;


    public void setScheduleStatus(String scheduleStatus) {
        this.scheduleStatus = scheduleStatus;
        this.scheduleStatusDesc = WorkOrderStatusEnum.getByCode(scheduleStatus).getDescription();
    }

    /**
     * 工单编码
     */
    private String orderCode;

    /**
     * 工单结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime orderEndTime;

    /**
     * 工单开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime orderStartTime;

    /**
     * 排程结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime scheduleEndTime;

    /**
     * 工单类型
     * 1 工厂mes工单
     * 2 产线自建工单
     */
    private Integer type;

    public void setType(Integer type) {
        this.type = type;
        this.typeDesc = WorkOrderTypeEnum.getByCode(type).getDescription();
    }

    @TableField(exist = false)
    private String typeDesc;


    @TableField(exist = false)
    private String beginDate;

    @TableField(exist = false)
    private String endDate;
}

